
#pragma once

// STL
#include <iostream>
#include <fstream>
#include <string>
#include <list>
using namespace std;

// windows
#ifdef _WIN32
    #include <windows.h>
    #include <conio.h>
    #include <cstdlib>

    #define KBHIT kbhit
#else
    #define KBHIT ;
#endif

// pthread headers
#include "pthread/pthread.h"

// pthread libs
#pragma comment(lib, "pthreadVC2.lib")

// OpenGL headers
#include "GL/glew.h"
#include "GL/gl.h"
#include "GL/glu.h"
#include "GL/glut.h"
#include "IL/ilut.h"
#include "Cg/cg.h"
#include "Cg/cgGL.h"

// OpenGL libs
#pragma comment(lib, "glew32.lib")
#pragma comment(lib, "opengl32.lib")
#pragma comment(lib, "glu32.lib")
#pragma comment(lib, "glut32.lib")
#pragma comment(lib, "DevIL.lib")
#pragma comment(lib, "ILU.lib")
#pragma comment(lib, "ILUT.lib")
#pragma comment(lib, "cg.lib")
#pragma comment(lib, "cgGL.lib")

#ifndef TRUE
    #define TRUE 1
#endif

#ifndef FALSE
    #define FALSE 0
#endif

#define _USE_PYTHON_    FALSE
#define _USE_BOOST_     TRUE

#if _USE_PYTHON_
    // Python headers
    // dla _DEBUG linker - ignore "python25_d.lib"
    #include <Python.h>

    // Python libs
    #pragma comment (lib, "python25.lib")
#endif // _USE_PYTHON_

// BOOST
#if _USE_BOOST_
    #include <boost/utility.hpp>
    #include <boost/ptr_container/ptr_unordered_map.hpp>
#endif // _USE_BOOST_

// others
#include "core/types.h"

#include "core/object.h"
#include "core/object_manager.h"

#include "logic/activator.h"

#include "model3/model.h"
#include "model3/material.h"
